package com.tesisutn.restsoft.persistencia.implementaciones.dominio;

import java.util.List;

import javax.persistence.Query;

import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.tesisutn.restsoft.dominio.pedido.Mesa;
import com.tesisutn.restsoft.dominio.pedido.PedidoDeSalon;
import com.tesisutn.restsoft.dominio.pedido.estadosPedidoSalon.EstadoPedidoSalon;
import com.tesisutn.restsoft.persistencia.implementaciones.base.PersistenciaJPA;
import com.tesisutn.restsoft.persistencia.interfaces.dominio.PersistenciaPedidoDeSalon;

@Repository
public class PersistenciaPedidoDeSalonImp extends PersistenciaJPA<PedidoDeSalon> implements PersistenciaPedidoDeSalon{
	
	public PersistenciaPedidoDeSalonImp() {
		super(PedidoDeSalon.class);
	}

	@Override
	@Transactional(readOnly = true)
	public List<PedidoDeSalon> getPedidosEnEstado(EstadoPedidoSalon estado) {
		Query query = entityManager.createQuery("select p from PedidoDeSalon p where p.estado = :estado");
		query.setParameter("estado", estado);
		return query.getResultList();
	}

	@Override
	@Transactional(readOnly = true)
	public PedidoDeSalon getPedidoAbiertoDeMesa(Mesa mesa) {
		// TODO Auto-generated method stub
		Query query = entityManager.createQuery("select p from PedidoDeSalon p where p.estado = :estado and p.mesa = :mesa");
		query.setParameter("estado", EstadoPedidoSalon.Abierto);
		query.setParameter("mesa", mesa);
		return (PedidoDeSalon)query.getSingleResult();
	}
}